1
Fondamenti Architetturali dell'Ecosistema HIP
AI022Lesson 3
00:00

L' Ecosistema HIP è architettato come un livello di astrazione sottile progettato per la compatibilità del codice sorgente tra architetture AMD e NVIDIA. Si avvale dello ROCm (Radeon Open Compute) stack, utilizzando specificamente il Architettura di Sistema Ibrido (HSA) runtime e il Driver di Fusione Kernel (KFD).

1. Avvio di Inizializzazione

L'inizializzazione inizia con scambi a basso livello tra i driver kernel tramite hsa_init(0, ...) e hsaKmtOpenKFD(...). Queste chiamate di configurazione creano il ponte di comunicazione tra le applicazioni nello spazio utente e l'hardware GPU AMD.

2. Rilevamento della Topologia e delle Proprietà

Prima di lanciare i kernel, il runtime identifica le capacità hardware utilizzando hsaKmtAcquireSystemProperties e hsaKmtGetNodeProperties. Mappa la memoria fisica ai nodi GPU utilizzando hsaKmtMapMemoryToGPUNodes, garantendo la visibilità della tabella delle pagine per il dispositivo.

3. La Pipeline di Compilazione

Il ponte tra CUDA e HIP si basa su due pilastri: hipify-perl (transpilatore basato su espressioni regolari) e hipcc (wrapper del compilatore).

# Esempio di Flusso di Porting
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. Logica della Versione

La compatibilità è garantita tramite una formula precisa per assicurare che hipRuntimeGetVersion corrisponda alle tabelle di estensione HSA:

$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$

Livello Applicativo (./square.out)Livello HIP (hipcc / API Runtime)Runtime HSA / Tabelle di EstensioneDriver Kernel (KFD) & Hardware
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>